#include "produtoscontroller.h"
#include "dao/trforncoletadao.h"
#include "dao/aqprodutodao.h"
#include "coletascontroller.h"

ProdutosController::ProdutosController(QObject *parent) :
    QObject(parent)
{
}

QVariantMap ProdutosController::loadDadosProduto(qulonglong produtoId)
{
    QVariantMap result;
    AQProdutoDAO dao;

    AQProduto *produto = dao.findById(produtoId);
    if(produto) {
        result.insert("id",produtoId);
        result.insert("ID_ProdGrupo",produto->ID_ProdGrupo());
        result.insert("Descricao",produto->Descricao());
        delete produto;
    }

    return result;
}


QVariantList ProdutosController::loadDadosProdutos(qulonglong fornecedorId)
{
    QVariantList result;

    ColetasController coletasController;

    TRFORNCOLETA *trFornColeta = coletasController.loadColetaFornecedor(fornecedorId);
    if(trFornColeta) {
        result = coletasController.loadProdutosColeta(trFornColeta->mId());

        TRCOLETA *trColeta = coletasController.localizaColetaEmAndamento(trFornColeta->mId());
        if(trColeta) {
            for(int i=0; i<result.length(); i++) {
                QVariantMap dados = result.at(i).toMap();
                TRCOLETAITEM *trColetaItem = coletasController.localizaItemColetado(trColeta,dados.value("id").toULongLong());
                if(trColetaItem) {
                    if(trColetaItem->Indisponivel()=="1") {
                        dados.insert("status","INDISPONIVEL");
                    } else {
                        dados.insert("status","COLETADO");
                    }
                    delete trColetaItem;
                } else {
                    dados.insert("status","NAO_COLETADO");
                }
                result[i] = dados;
            }
            delete trColeta;
        } else {
            for(int i=0; i<result.length(); i++) {
                QVariantMap dados = result.at(i).toMap();
                dados.insert("status","NAO_COLETADO");
                result[i] = dados;
            }
        }
        delete trFornColeta;
    }

    return result;
}
